home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Programming / LEDA / incl / LEDA.020+881 / subdivision.h < prev    next >
C/C++ Source or Header  |  1994-08-05  |  2KB  |  73 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  3.1c
  4. +
  5. +
  6. +  subdivision.h
  7. +
  8. +
  9. +  Copyright (c) 1994  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15. #ifndef LEDA_SUBDIVISION_H
  16. #define LEDA_SUBDIVISION_H
  17.  
  18. #include <LEDA/point.h>
  19. #include <LEDA/planar_map.h>
  20.  
  21. class SubDivision : public planar_map
  22. {
  23.   face outer_face;
  24.  
  25.   void* strip_ptr;   //pointer to strip_list
  26.   
  27. public:
  28.   
  29.   SubDivision(const graph&);
  30.  
  31.  ~SubDivision();
  32.  
  33.   point  position(node v)    const { return ACCESS(point,inf(v)); }
  34.   
  35.   face   locate_point(point) const;
  36.  
  37.   void   print_stripes() const;
  38.   
  39. };
  40.  
  41.  
  42. //------------------------------------------------------------------------------
  43. //
  44. // subdivision: generic subdivisions with face entries of type "ftype"
  45. //
  46. //------------------------------------------------------------------------------
  47.  
  48.  
  49. template <class ftype>
  50.  
  51. class _CLASSTYPE subdivision : public SubDivision {
  52.  
  53. void copy_face_entry(GenPtr& x)  const { x=Copy(ACCESS(ftype,x)); }
  54. void clear_face_entry(GenPtr& x) const { Clear(ACCESS(ftype,x));  }
  55.  
  56. public:
  57.  
  58.    ftype  inf(face f)         const {return ACCESS(ftype,SubDivision::inf(f));}
  59.    point  operator[](node v)  const {return ACCESS(point,SubDivision::inf(v));}
  60.    ftype  operator[](face f)  const {return ACCESS(ftype,SubDivision::inf(f));}
  61.  
  62. void print_node(node v) const { cout << "[" << index(v) <<"] (";
  63.                                 Print(position(v));
  64.                                 cout << ") ";}
  65.  
  66.    subdivision(GRAPH<point,ftype>& G) : SubDivision(G)   {}
  67.   ~subdivision()     { clear(); }
  68.  
  69. };
  70.  
  71. #endif
  72.